package code1.array;

import java.util.Arrays;

/**
 * 原题链接：https://leetcode.cn/problems/squares-of-a-sorted-array/
 */
public class P977 {

    //暴力法
    public static int[] sortedSquares(int[] nums) {
        for(int i=0;i<nums.length;i++){
             nums[i]=nums[i]*nums[i];
        }
        Arrays.sort(nums);
        return nums;
    }

    //双指针法
    public static int[] sortedSquares2(int[] nums) {
        int[] result=new int[nums.length];
        int k=nums.length-1;        //k指向result末端，即表示当前最大数
        int i=0,j=nums.length-1;
        while(i<=j){
            if(nums[i]*nums[i]<nums[j]*nums[j]){
                result[k--]=nums[j]*nums[j];
                j--;
            }else{
                result[k--]=nums[i]*nums[i];
                i++;
            }
        }
        return result;
    }

    public static void main(String[] args) {
        int[] nums={-4,-1,0,3,10};
        int[] ans = sortedSquares2(nums);
        for(int i=0;i<ans.length;i++){
            System.out.print(ans[i]+" ");
        }
    }

}
